home *** CD-ROM | disk | FTP | other *** search
-
- Program Zap;
-
- Procedure ZapIt(FileName : String; Pattern : Char; LastPass : Boolean);
- Var
- NumRead,
- NumWritten : Word;
- Buffer : Array[1..4096] Of Char;
- BufferSize : Word;
- ZapFile : File;
- ZapFilePos : LongInt;
-
- Begin
- BufferSize := SizeOf(Buffer);
- Assign(ZapFile, FileName);
- {$I-} Reset(ZapFile, 1); {$I+}
- If IOResult <> 0 Then Begin
- WriteLn('File not found');
- Halt;
- end;
- Repeat
- ZapFilePos := FilePos(ZapFile);
- BlockRead(ZapFile, Buffer, BufferSize, NumRead);
- FillChar(Buffer, BufferSize, Pattern);
- Seek(ZapFile, ZapFilePos);
- BlockWrite(ZapFile, Buffer, NumRead, NumWritten);
- Until (NumRead = 0) Or (NumWritten <> NumRead);
- Close(ZapFile);
- if LastPass Then Erase(ZapFile);
- End;
-
- begin
- ZapIt(ParamStr(1), #005, False); {0101}
- ZapIt(ParamStr(1), #010, False); {1010}
- ZapIt(ParamStr(1), #000, False); {0000}
- ZapIt(ParamStr(1), #255, True ); {1111}
- end.
-
- {
- Here's the comments for the above procedure:
-
- Get the buffer size for later use
- Get the file name from the first command line parameter
- Try to open the file
- If there was an error opening file, show the user and exit
- otherwise repeat this code
- Save the current file position
- Read a block of data from the file into a buffer
- Fill buffer with specified bit pattern
- Reset file position to where we read this block from and
- write the block back to the file
- until we're done or there was a conflict in the read/write size
- close the file
- delete the file from disk if it's the last pass
- }
-